{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-platform-imaging-core",
      "artifactVersion": "2025.27.34",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.ecm.platform.picture.core",
          "org.nuxeo.ecm.platform.picture.rest"
        ],
        "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture",
        "id": "grp:org.nuxeo.ecm.platform.picture",
        "name": "org.nuxeo.ecm.platform.picture",
        "parentIds": [
          "grp:org.nuxeo.ecm.platform"
        ],
        "readmes": [],
        "version": "2025.27"
      },
      "bundleId": "org.nuxeo.ecm.platform.picture.core",
      "components": [
        {
          "@type": "NXComponent",
          "documentation": "\n    Defines configurations for imaging service\n  \n",
          "documentationHtml": "<p>\nDefines configurations for imaging service\n</p><p></p>",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.picture.ImagingComponent--configuration",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.ImagingComponent.default.config/Contributions/org.nuxeo.ecm.platform.picture.ImagingComponent.default.config--configuration",
              "id": "org.nuxeo.ecm.platform.picture.ImagingComponent.default.config--configuration",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.picture.ImagingComponent",
                "name": "org.nuxeo.ecm.platform.picture.ImagingComponent",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.ecm.platform.picture.ImagingComponent\">\n\n    <configuration>\n      <parameters>\n        <!-- global configuration variables -->\n        <parameter name=\"conversionFormat\">jpg</parameter>\n      </parameters>\n    </configuration>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.picture.ImagingComponent--pictureConversions",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.ImagingComponent.default.config/Contributions/org.nuxeo.ecm.platform.picture.ImagingComponent.default.config--pictureConversions",
              "id": "org.nuxeo.ecm.platform.picture.ImagingComponent.default.config--pictureConversions",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.picture.ImagingComponent",
                "name": "org.nuxeo.ecm.platform.picture.ImagingComponent",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"pictureConversions\" target=\"org.nuxeo.ecm.platform.picture.ImagingComponent\">\n\n    <pictureConversion chainId=\"Image.Blob.Resize\" default=\"true\" description=\"Thumbnail size\" id=\"Thumbnail\" maxSize=\"100\" order=\"0\" rendition=\"true\"/>\n\n    <pictureConversion chainId=\"Image.Blob.Resize\" default=\"true\" description=\"Small size\" id=\"Small\" maxSize=\"560\" order=\"100\" rendition=\"true\"/>\n\n    <pictureConversion chainId=\"Image.Blob.Resize\" default=\"true\" description=\"Medium size\" id=\"Medium\" maxSize=\"1000\" order=\"200\" rendition=\"true\"/>\n\n    <pictureConversion chainId=\"Image.Blob.Resize\" default=\"true\" description=\"Full HD size\" id=\"FullHD\" maxSize=\"1920\" order=\"300\" rendition=\"true\"/>\n\n    <pictureConversion chainId=\"Image.Blob.Resize\" default=\"true\" description=\"Original jpeg image\" id=\"OriginalJpeg\" order=\"400\" rendition=\"true\"/>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.ImagingComponent.default.config",
          "name": "org.nuxeo.ecm.platform.picture.ImagingComponent.default.config",
          "requirements": [],
          "resolutionOrder": 322,
          "services": [],
          "startOrder": 311,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n\n<component name=\"org.nuxeo.ecm.platform.picture.ImagingComponent.default.config\">\n  <documentation>\n    Defines configurations for imaging service\n  </documentation>\n\n  <extension target=\"org.nuxeo.ecm.platform.picture.ImagingComponent\"\n    point=\"configuration\">\n\n    <configuration>\n      <parameters>\n        <!-- global configuration variables -->\n        <parameter name=\"conversionFormat\">jpg</parameter>\n      </parameters>\n    </configuration>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.picture.ImagingComponent\"\n    point=\"pictureConversions\">\n\n    <pictureConversion id=\"Thumbnail\" description=\"Thumbnail size\"\n      maxSize=\"100\" order=\"0\" chainId=\"Image.Blob.Resize\"\n      default=\"true\" rendition=\"true\" />\n\n    <pictureConversion id=\"Small\" description=\"Small size\"\n      maxSize=\"560\" order=\"100\" chainId=\"Image.Blob.Resize\"\n      default=\"true\" rendition=\"true\" />\n\n    <pictureConversion id=\"Medium\" description=\"Medium size\"\n      maxSize=\"1000\" order=\"200\" chainId=\"Image.Blob.Resize\"\n      default=\"true\" rendition=\"true\" />\n\n    <pictureConversion id=\"FullHD\" description=\"Full HD size\"\n      maxSize=\"1920\" order=\"300\" chainId=\"Image.Blob.Resize\"\n      default=\"true\" rendition=\"true\" />\n\n    <pictureConversion id=\"OriginalJpeg\" description=\"Original jpeg image\"\n      order=\"400\" chainId=\"Image.Blob.Resize\"\n      default=\"true\" rendition=\"true\" />\n\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/imaging-service-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.bulk--actions",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.imaging.bulk/Contributions/org.nuxeo.ecm.platform.imaging.bulk--actions",
              "id": "org.nuxeo.ecm.platform.imaging.bulk--actions",
              "registrationOrder": 9,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.bulk",
                "name": "org.nuxeo.ecm.core.bulk",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"actions\" target=\"org.nuxeo.ecm.core.bulk\">\n    <action batchSize=\"1\" bucketSize=\"10\" defaultScroller=\"repository\" httpEnabled=\"false\" inputStream=\"bulk/recomputeViews\" name=\"recomputeViews\" validationClass=\"org.nuxeo.ecm.platform.picture.recompute.RecomputeViewsActionValidation\"/>\n    <action batchSize=\"1\" bucketSize=\"10\" defaultScroller=\"repository\" enabled=\"false\" httpEnabled=\"false\" inputStream=\"bulk/recomputeViewsBackground\" name=\"recomputeViewsBackground\" validationClass=\"org.nuxeo.ecm.platform.picture.recompute.RecomputeViewsActionValidation\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.runtime.stream.service--streamProcessor",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.imaging.bulk/Contributions/org.nuxeo.ecm.platform.imaging.bulk--streamProcessor",
              "id": "org.nuxeo.ecm.platform.imaging.bulk--streamProcessor",
              "registrationOrder": 12,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.stream.service",
                "name": "org.nuxeo.runtime.stream.service",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"streamProcessor\" target=\"org.nuxeo.runtime.stream.service\">\n    <streamProcessor class=\"org.nuxeo.ecm.platform.picture.recompute.RecomputeViewsAction\" defaultConcurrency=\"2\" defaultPartitions=\"6\" name=\"recomputeViews\">\n      <policy continueOnFailure=\"true\" delay=\"5s\" maxDelay=\"10s\" maxRetries=\"1\" name=\"default\"/>\n    </streamProcessor>\n    <streamProcessor class=\"org.nuxeo.ecm.platform.picture.recompute.RecomputeViewsAction\" defaultConcurrency=\"2\" defaultPartitions=\"12\" enabled=\"false\" name=\"recomputeViewsBackground\">\n      <policy continueOnFailure=\"true\" delay=\"5s\" maxDelay=\"10s\" maxRetries=\"1\" name=\"default\"/>\n    </streamProcessor>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.imaging.bulk",
          "name": "org.nuxeo.ecm.platform.imaging.bulk",
          "requirements": [
            "org.nuxeo.ecm.core.bulk"
          ],
          "resolutionOrder": 323,
          "services": [],
          "startOrder": 279,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.imaging.bulk\" version=\"1.0.0\">\n\n  <require>org.nuxeo.ecm.core.bulk</require>\n\n  <extension target=\"org.nuxeo.ecm.core.bulk\" point=\"actions\">\n    <action name=\"recomputeViews\" defaultScroller=\"repository\" inputStream=\"bulk/recomputeViews\" bucketSize=\"10\"\n      batchSize=\"1\" httpEnabled=\"false\"\n      validationClass=\"org.nuxeo.ecm.platform.picture.recompute.RecomputeViewsActionValidation\" />\n    <action name=\"recomputeViewsBackground\" defaultScroller=\"repository\" inputStream=\"bulk/recomputeViewsBackground\"\n      bucketSize=\"10\" batchSize=\"1\" httpEnabled=\"false\" enabled=\"${nuxeo.bulk.action.recomputeViewsBackground.enabled:=false}\"\n      validationClass=\"org.nuxeo.ecm.platform.picture.recompute.RecomputeViewsActionValidation\" />\n  </extension>\n\n  <extension target=\"org.nuxeo.runtime.stream.service\" point=\"streamProcessor\">\n    <streamProcessor name=\"recomputeViews\" class=\"org.nuxeo.ecm.platform.picture.recompute.RecomputeViewsAction\"\n      defaultConcurrency=\"${nuxeo.bulk.action.recomputeViews.defaultConcurrency:=2}\"\n      defaultPartitions=\"${nuxeo.bulk.action.recomputeViews.defaultPartitions:=6}\">\n      <policy name=\"default\" maxRetries=\"${nuxeo.bulk.action.recomputeViews.maxRetries:=1}\" delay=\"5s\" maxDelay=\"10s\" continueOnFailure=\"true\" />\n    </streamProcessor>\n    <streamProcessor name=\"recomputeViewsBackground\"\n      class=\"org.nuxeo.ecm.platform.picture.recompute.RecomputeViewsAction\"\n      enabled=\"${nuxeo.bulk.action.recomputeViewsBackground.enabled:=false}\"\n      defaultConcurrency=\"${nuxeo.bulk.action.recomputeViewsBackground.defaultConcurrency:=2}\"\n      defaultPartitions=\"${nuxeo.bulk.action.recomputeViewsBackground.defaultPartitions:=12}\">\n      <policy name=\"default\" maxRetries=\"${nuxeo.bulk.action.recomputeViewsBackground.maxRetries:=1}\" delay=\"5s\"\n        maxDelay=\"10s\" continueOnFailure=\"true\" />\n    </streamProcessor>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/imaging-bulk-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.query.api.PageProviderService--providers",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.pageproviders/Contributions/org.nuxeo.ecm.platform.picture.pageproviders--providers",
              "id": "org.nuxeo.ecm.platform.picture.pageproviders--providers",
              "registrationOrder": 15,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.query.api.PageProviderService",
                "name": "org.nuxeo.ecm.platform.query.api.PageProviderService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"providers\" target=\"org.nuxeo.ecm.platform.query.api.PageProviderService\">\n\n    <coreQueryPageProvider name=\"document_picker\">\n      <trackUsage>true</trackUsage>\n      <searchDocumentType>AdvancedSearch</searchDocumentType>\n      <whereClause>\n        <predicate operator=\"FULLTEXT\" parameter=\"ecm:fulltext\">\n          <field name=\"fulltext_all\" schema=\"advanced_search\"/>\n        </predicate>\n        <fixedPart>\n          ecm:mixinType = 'Picture' AND\n          file:content IS NOT NULL AND\n          ecm:mixinType != 'HiddenInNavigation' AND\n          ecm:isVersion = 0 AND\n          ecm:isTrashed = 0 AND\n          ecm:parentId IS NOT NULL\n        </fixedPart>\n      </whereClause>\n      <pageSize>20</pageSize>\n    </coreQueryPageProvider>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.pageproviders",
          "name": "org.nuxeo.ecm.platform.picture.pageproviders",
          "requirements": [],
          "resolutionOrder": 324,
          "services": [],
          "startOrder": 323,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n\n<component name=\"org.nuxeo.ecm.platform.picture.pageproviders\">\n\n  <extension target=\"org.nuxeo.ecm.platform.query.api.PageProviderService\" point=\"providers\">\n\n    <coreQueryPageProvider name=\"document_picker\">\n      <trackUsage>true</trackUsage>\n      <searchDocumentType>AdvancedSearch</searchDocumentType>\n      <whereClause>\n        <predicate parameter=\"ecm:fulltext\" operator=\"FULLTEXT\">\n          <field schema=\"advanced_search\" name=\"fulltext_all\" />\n        </predicate>\n        <fixedPart>\n          ecm:mixinType = 'Picture' AND\n          file:content IS NOT NULL AND\n          ecm:mixinType != 'HiddenInNavigation' AND\n          ecm:isVersion = 0 AND\n          ecm:isTrashed = 0 AND\n          ecm:parentId IS NOT NULL\n        </fixedPart>\n      </whereClause>\n      <pageSize>20</pageSize>\n    </coreQueryPageProvider>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/imaging-pageprovider-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.types.TypeService--types",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.jsf.types/Contributions/org.nuxeo.ecm.platform.picture.jsf.types--types",
              "id": "org.nuxeo.ecm.platform.picture.jsf.types--types",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.types.TypeService",
                "name": "org.nuxeo.ecm.platform.types.TypeService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"types\" target=\"org.nuxeo.ecm.platform.types.TypeService\">\n\n    <type id=\"PictureBook\">\n      <label>PictureBook</label>\n      <icon>/icons/picturebook.gif</icon>\n      <bigIcon>/icons/picturebook_100.png</bigIcon>\n      <description>PictureBook.description</description>\n      <category>Collaborative</category>\n      <default-view>view_documents</default-view>\n      <contentViews category=\"content\">\n        <contentView>document_content</contentView>\n      </contentViews>\n      <contentViews category=\"trash_content\">\n        <contentView showInExportView=\"false\">\n          document_trash_content\n        </contentView>\n      </contentViews>\n    </type>\n\n    <type id=\"Picture\">\n      <label>Picture</label>\n      <default-view>view_documents</default-view>\n      <icon>/icons/image.gif</icon>\n      <bigIcon>/icons/image_100.png</bigIcon>\n      <category>SimpleDocument</category>\n      <description>Picture.description</description>\n    </type>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.jsf.types",
          "name": "org.nuxeo.ecm.platform.picture.jsf.types",
          "requirements": [],
          "resolutionOrder": 325,
          "services": [],
          "startOrder": 320,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.jsf.types\">\n\n  <extension target=\"org.nuxeo.ecm.platform.types.TypeService\" point=\"types\">\n\n    <type id=\"PictureBook\">\n      <label>PictureBook</label>\n      <icon>/icons/picturebook.gif</icon>\n      <bigIcon>/icons/picturebook_100.png</bigIcon>\n      <description>PictureBook.description</description>\n      <category>Collaborative</category>\n      <default-view>view_documents</default-view>\n      <contentViews category=\"content\">\n        <contentView>document_content</contentView>\n      </contentViews>\n      <contentViews category=\"trash_content\">\n        <contentView showInExportView=\"false\">\n          document_trash_content\n        </contentView>\n      </contentViews>\n    </type>\n\n    <type id=\"Picture\">\n      <label>Picture</label>\n      <default-view>view_documents</default-view>\n      <icon>/icons/image.gif</icon>\n      <bigIcon>/icons/image_100.png</bigIcon>\n      <category>SimpleDocument</category>\n      <description>Picture.description</description>\n    </type>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/imaging-types-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.lifecycle.LifeCycleService--types",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.LifeCycleManagerExtensions/Contributions/org.nuxeo.ecm.platform.picture.LifeCycleManagerExtensions--types",
              "id": "org.nuxeo.ecm.platform.picture.LifeCycleManagerExtensions--types",
              "registrationOrder": 9,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "name": "org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"types\" target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\">\n    <types>\n      <type name=\"Picture\">default</type>\n    </types>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.LifeCycleManagerExtensions",
          "name": "org.nuxeo.ecm.platform.picture.LifeCycleManagerExtensions",
          "requirements": [],
          "resolutionOrder": 326,
          "services": [],
          "startOrder": 312,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.LifeCycleManagerExtensions\">\n\n  <extension target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\"\n             point=\"types\">\n    <types>\n      <type name=\"Picture\">default</type>\n    </types>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/picture-life-cycle-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.listeners/Contributions/org.nuxeo.ecm.platform.picture.listeners--listener",
              "id": "org.nuxeo.ecm.platform.picture.listeners--listener",
              "registrationOrder": 29,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.event.EventServiceComponent",
                "name": "org.nuxeo.ecm.core.event.EventServiceComponent",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"listener\" target=\"org.nuxeo.ecm.core.event.EventServiceComponent\">\n\n    <listener async=\"false\" class=\"org.nuxeo.ecm.platform.picture.listener.PictureChangedListener\" name=\"pictureChangedListener\" postCommit=\"false\" priority=\"20\">\n      <event>aboutToCreate</event>\n      <event>beforeDocumentModification</event>\n    </listener>\n\n    <listener async=\"true\" class=\"org.nuxeo.ecm.platform.picture.listener.PictureViewsGenerationListener\" name=\"pictureViewsGenerationListener\" postCommit=\"true\" priority=\"20\">\n      <event>documentCreated</event>\n      <event>documentModified</event>\n    </listener>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.listeners",
          "name": "org.nuxeo.ecm.platform.picture.listeners",
          "requirements": [],
          "resolutionOrder": 327,
          "services": [],
          "startOrder": 321,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.listeners\">\n\n  <extension target=\"org.nuxeo.ecm.core.event.EventServiceComponent\" point=\"listener\">\n\n    <listener name=\"pictureChangedListener\" async=\"false\" postCommit=\"false\"\n      class=\"org.nuxeo.ecm.platform.picture.listener.PictureChangedListener\" priority=\"20\">\n      <event>aboutToCreate</event>\n      <event>beforeDocumentModification</event>\n    </listener>\n\n    <listener name=\"pictureViewsGenerationListener\" async=\"true\" postCommit=\"true\"\n      class=\"org.nuxeo.ecm.platform.picture.listener.PictureViewsGenerationListener\" priority=\"20\">\n      <event>documentCreated</event>\n      <event>documentModified</event>\n    </listener>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/listeners-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--schema",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.web.coreTypes/Contributions/org.nuxeo.ecm.platform.picture.web.coreTypes--schema",
              "id": "org.nuxeo.ecm.platform.picture.web.coreTypes--schema",
              "registrationOrder": 20,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"schema\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <schema name=\"picturebook\" src=\"schema/picturebook.xsd\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--doctype",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.web.coreTypes/Contributions/org.nuxeo.ecm.platform.picture.web.coreTypes--doctype",
              "id": "org.nuxeo.ecm.platform.picture.web.coreTypes--doctype",
              "registrationOrder": 17,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"doctype\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <doctype extends=\"Folder\" name=\"PictureBook\">\n      <schema name=\"picturebook\"/>\n    </doctype>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.web.coreTypes",
          "name": "org.nuxeo.ecm.platform.picture.web.coreTypes",
          "requirements": [
            "org.nuxeo.ecm.core.schema.TypeService",
            "org.nuxeo.ecm.core.CoreExtensions"
          ],
          "resolutionOrder": 328,
          "services": [],
          "startOrder": 326,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.web.coreTypes\">\n\n  <require>org.nuxeo.ecm.core.schema.TypeService</require>\n  <require>org.nuxeo.ecm.core.CoreExtensions</require>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\"\n             point=\"schema\">\n    <schema name=\"picturebook\" src=\"schema/picturebook.xsd\"/>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\"\n             point=\"doctype\">\n    <doctype name=\"PictureBook\" extends=\"Folder\">\n      <schema name=\"picturebook\"/>\n    </doctype>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/picturebook-schemas-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.lifecycle.LifeCycleService--types",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.pictureweb.LifeCycleManagerExtensions/Contributions/org.nuxeo.ecm.platform.pictureweb.LifeCycleManagerExtensions--types",
              "id": "org.nuxeo.ecm.platform.pictureweb.LifeCycleManagerExtensions--types",
              "registrationOrder": 10,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "name": "org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"types\" target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\">\n    <types>\n      <type name=\"PictureBook\">default</type>\n\n    </types>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.pictureweb.LifeCycleManagerExtensions",
          "name": "org.nuxeo.ecm.platform.pictureweb.LifeCycleManagerExtensions",
          "requirements": [],
          "resolutionOrder": 329,
          "services": [],
          "startOrder": 329,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component\n    name=\"org.nuxeo.ecm.platform.pictureweb.LifeCycleManagerExtensions\">\n\n  <extension target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\"\n             point=\"types\">\n    <types>\n      <type name=\"PictureBook\">default</type>\n\n    </types>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/picturebook-life-cycle-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent--command",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.commandline.imagemagick/Contributions/org.nuxeo.ecm.platform.picture.commandline.imagemagick--command",
              "id": "org.nuxeo.ecm.platform.picture.commandline.imagemagick--command",
              "registrationOrder": 7,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent",
                "name": "org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"command\" target=\"org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent\">\n\n    <command enabled=\"true\" name=\"identify\">\n      <commandLine>identify</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -ping -format '%m %w %h %z %[colorspace]' #{inputFilePath}[0]</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -ping -format \"%m %w %h %z %[colorspace]\" #{inputFilePath}[0]</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"crop\">\n      <commandLine>stream</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -map rgb -storage-type char -extract #{tileWidth}x#{tileHeight}+#{offsetX}+#{offsetY} #{inputFilePath}[0] - | convert -depth 8 -size #{tileWidth}x#{tileHeight} rgb:- #{outputFilePath}</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -map rgb -storage-type char -extract #{tileWidth}x#{tileHeight}+#{offsetX}+#{offsetY} #{inputFilePath}[0] - | convert -depth 8 -size #{tileWidth}x#{tileHeight} rgb:- #{outputFilePath}</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"resizer\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -depth #{targetDepth} #{inputFilePath}[0] jpg:- | convert - -resize #{targetWidth}x#{targetHeight} #{outputFilePath}</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -depth #{targetDepth} #{inputFilePath}[0] -resize #{targetWidth}x#{targetHeight} #{outputFilePath}</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"gifResizer\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -depth #{targetDept h} #{inputFilePath}[0] -coalesce -resize #{targetWidth}x#{targetHeight} -deconstruct #{outputFilePath}</parameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"jpegResizer\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -background white -flatten -depth #{targetDepth} #{inputFilePath}[0] jpg:- | convert - -resize #{targetWidth}x#{targetHeight} #{outputFilePath}</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -background white -flatten -depth #{targetDepth} #{inputFilePath}[0] -resize #{targetWidth}x#{targetHeight} #{outputFilePath}</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"rotate\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet #{inputFilePath}[0] -rotate #{angle} #{outputFilePath}</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet #{inputFilePath}[0] -rotate #{angle} #{outputFilePath}</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"cropAndResize\">\n      <commandLine>stream</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -map #{mapComponents} -storage-type char -extract #{tileWidth}x#{tileHeight}+#{offsetX}+#{offsetY} #{inputFilePath}[0] - | convert -depth 8 -size #{tileWidth}x#{tileHeight} -resize #{targetWidth}x#{targetHeight}! #{mapComponents}:- #{outputFilePath}</parameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"multiTiler\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet #{inputFilePath}[0] -crop #{tileWidth}x#{tileHeight} +repage #{outputFilePath}</parameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.commandline.imagemagick",
          "name": "org.nuxeo.ecm.platform.picture.commandline.imagemagick",
          "requirements": [
            "org.nuxeo.ecm.platform.commandline.executor.service.defaultContrib"
          ],
          "resolutionOrder": 330,
          "services": [],
          "startOrder": 316,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.commandline.imagemagick\">\n\n  <require>org.nuxeo.ecm.platform.commandline.executor.service.defaultContrib</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent\"\n    point=\"command\">\n\n    <command name=\"identify\" enabled=\"true\">\n      <commandLine>identify</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -ping -format '%m %w %h %z %[colorspace]' #{inputFilePath}[0]</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -ping -format \"%m %w %h %z %[colorspace]\" #{inputFilePath}[0]</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command name=\"crop\" enabled=\"true\">\n      <commandLine>stream</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -map rgb -storage-type char -extract #{tileWidth}x#{tileHeight}+#{offsetX}+#{offsetY} #{inputFilePath}[0] - | convert -depth 8 -size #{tileWidth}x#{tileHeight} rgb:- #{outputFilePath}</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -map rgb -storage-type char -extract #{tileWidth}x#{tileHeight}+#{offsetX}+#{offsetY} #{inputFilePath}[0] - | convert -depth 8 -size #{tileWidth}x#{tileHeight} rgb:- #{outputFilePath}</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command name=\"resizer\" enabled=\"true\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -depth #{targetDepth} #{inputFilePath}[0] jpg:- | convert - -resize #{targetWidth}x#{targetHeight} #{outputFilePath}</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -depth #{targetDepth} #{inputFilePath}[0] -resize #{targetWidth}x#{targetHeight} #{outputFilePath}</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command name=\"gifResizer\" enabled=\"true\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -depth #{targetDept h} #{inputFilePath}[0] -coalesce -resize #{targetWidth}x#{targetHeight} -deconstruct #{outputFilePath}</parameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command name=\"jpegResizer\" enabled=\"true\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -background white -flatten -depth #{targetDepth} #{inputFilePath}[0] jpg:- | convert - -resize #{targetWidth}x#{targetHeight} #{outputFilePath}</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -background white -flatten -depth #{targetDepth} #{inputFilePath}[0] -resize #{targetWidth}x#{targetHeight} #{outputFilePath}</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command name=\"rotate\" enabled=\"true\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet #{inputFilePath}[0] -rotate #{angle} #{outputFilePath}</parameterString>\n      <winParameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet #{inputFilePath}[0] -rotate #{angle} #{outputFilePath}</winParameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command name=\"cropAndResize\" enabled=\"true\">\n      <commandLine>stream</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet -map #{mapComponents} -storage-type char -extract #{tileWidth}x#{tileHeight}+#{offsetX}+#{offsetY} #{inputFilePath}[0] - | convert -depth 8 -size #{tileWidth}x#{tileHeight} -resize #{targetWidth}x#{targetHeight}! #{mapComponents}:- #{outputFilePath}</parameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n    <command name=\"multiTiler\" enabled=\"true\">\n      <commandLine>convert</commandLine>\n      <parameterString>-define registry:temporary-path=#{nuxeo.tmp.dir} -quiet #{inputFilePath}[0] -crop #{tileWidth}x#{tileHeight} +repage #{outputFilePath}</parameterString>\n      <installationDirective>You need to install ImageMagick.</installationDirective>\n    </command>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/commandline-imagemagick-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService",
          "documentation": "\n    The Library Selector service's goal is to provide easy configuration of image processing backend.\n    It means you can contribute different implementation of an interface to process images. We currently provide\n    ImageMagick and ImageJ implementations.\n    @author Laurent Doguin (ldoguin@nuxeo.com)\n  \n",
          "documentationHtml": "<p>\nThe Library Selector service&#39;s goal is to provide easy configuration of image processing backend.\nIt means you can contribute different implementation of an interface to process images. We currently provide\nImageMagick and ImageJ implementations.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService",
              "descriptors": [
                "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorServiceDescriptor"
              ],
              "documentation": "@author Laurent Doguin (ldoguin@nuxeo.com) This\n      extension point let you choose or add an image processing library.\n    \n",
              "documentationHtml": "<p>\nextension point let you choose or add an image processing library.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService/ExtensionPoints/org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService--LibrarySelector",
              "id": "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService--LibrarySelector",
              "label": "LibrarySelector (org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService)",
              "name": "LibrarySelector",
              "version": "2025.27.34"
            }
          ],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService--LibrarySelector",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService/Contributions/org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService--LibrarySelector",
              "id": "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService--LibrarySelector",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService",
                "name": "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"LibrarySelector\" target=\"org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService\">\n    <LibrarySelector>\n      <ImageUtils class=\"org.nuxeo.ecm.platform.picture.core.im.IMImageUtils\" name=\"ImageMagick\"/>\n    </LibrarySelector>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService",
          "name": "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService",
          "requirements": [
            "org.nuxeo.ecm.platform.picture.commandline.imagemagick"
          ],
          "resolutionOrder": 331,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService/Services/org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelector",
              "id": "org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelector",
              "overriden": false,
              "version": "2025.27.34"
            }
          ],
          "startOrder": 647,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService\">\n\n  <implementation class=\"org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService\"/>\n  <require>org.nuxeo.ecm.platform.picture.commandline.imagemagick</require>\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelector\"/>\n  </service>\n\n  <documentation>\n    The Library Selector service's goal is to provide easy configuration of image processing backend.\n    It means you can contribute different implementation of an interface to process images. We currently provide\n    ImageMagick and ImageJ implementations.\n    @author Laurent Doguin (ldoguin@nuxeo.com)\n  </documentation>\n\n  <extension-point name=\"LibrarySelector\">\n    <documentation>@author Laurent Doguin (ldoguin@nuxeo.com) This\n      extension point let you choose or add an image processing library.\n    </documentation>\n    <object class=\"org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorServiceDescriptor\"/>\n  </extension-point>\n\n  <extension target=\"org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService\"\n             point=\"LibrarySelector\">\n    <LibrarySelector>\n      <ImageUtils\n          class=\"org.nuxeo.ecm.platform.picture.core.im.IMImageUtils\"\n          name=\"ImageMagick\"/>\n    </LibrarySelector>\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/libraryselector-config-framework.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentation": "\n      Simple plugin for the file manager. Creates an Image document from\n      any graphic file.\n    \n",
              "documentationHtml": "<p>\nSimple plugin for the file manager. Creates an Image document from\nany graphic file.\n</p><p></p>",
              "extensionPoint": "org.nuxeo.ecm.platform.filemanager.service.FileManagerService--plugins",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.filemanager.contrib/Contributions/org.nuxeo.ecm.platform.picture.filemanager.contrib--plugins",
              "id": "org.nuxeo.ecm.platform.picture.filemanager.contrib--plugins",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.filemanager.service.FileManagerService",
                "name": "org.nuxeo.ecm.platform.filemanager.service.FileManagerService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"plugins\" target=\"org.nuxeo.ecm.platform.filemanager.service.FileManagerService\">\n    <documentation>\n      Simple plugin for the file manager. Creates an Image document from\n      any graphic file.\n    </documentation>\n    <plugin class=\"org.nuxeo.ecm.platform.picture.extension.ImagePlugin\" name=\"Imageplugin\" order=\"10\">\n      <filter>image/jpeg</filter>\n      <filter>image/gif</filter>\n      <filter>image/png</filter>\n      <filter>image/tiff</filter>\n      <filter>image/bmp</filter>\n      <filter>image/x-ms-bmp</filter>\n      <!-- RAW images mime type -->\n      <filter>image/x-canon-cr2</filter>\n      <filter>image/x-canon-crw</filter>\n      <filter>image/x-nikon-nef</filter>\n      <filter>image/x-adobe-dng</filter>\n      <filter>image/x-panasonic-raw</filter>\n      <filter>image/x-fuji-raf</filter>\n      <filter>image/x-sigma-x3f</filter>\n      <filter>image/x-pentax-pef</filter>\n      <filter>image/x-kodak-dcr</filter>\n      <filter>image/x-kodak-kdc</filter>\n      <filter>image/x-sony-sr2</filter>\n      <filter>image/x-sony-arw</filter>\n      <filter>image/x-sony-srf</filter>\n      <filter>image/x-minolta-mrw</filter>\n      <filter>image/x-olympus-orf</filter>\n      <filter>image/x-raw-epson</filter>\n      <filter>image/x-portable-pixmap</filter>\n      <filter>image/x-dpx</filter>\n\n      <filter>image/raw</filter>\n      <filter>image/x-raw</filter>\n\n      <filter>image/svg.*</filter>\n\n      <filter>application/photoshop</filter>\n      <filter>application/illustrator</filter>\n      <filter>application/postscript</filter>\n    </plugin>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.filemanager.contrib",
          "name": "org.nuxeo.ecm.platform.picture.filemanager.contrib",
          "requirements": [],
          "resolutionOrder": 332,
          "services": [],
          "startOrder": 319,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.filemanager.contrib\">\n\n  <extension\n      target=\"org.nuxeo.ecm.platform.filemanager.service.FileManagerService\"\n      point=\"plugins\">\n    <documentation>\n      Simple plugin for the file manager. Creates an Image document from\n      any graphic file.\n    </documentation>\n    <plugin name=\"Imageplugin\"\n            class=\"org.nuxeo.ecm.platform.picture.extension.ImagePlugin\"\n            order=\"10\">\n      <filter>image/jpeg</filter>\n      <filter>image/gif</filter>\n      <filter>image/png</filter>\n      <filter>image/tiff</filter>\n      <filter>image/bmp</filter>\n      <filter>image/x-ms-bmp</filter>\n      <!-- RAW images mime type -->\n      <filter>image/x-canon-cr2</filter>\n      <filter>image/x-canon-crw</filter>\n      <filter>image/x-nikon-nef</filter>\n      <filter>image/x-adobe-dng</filter>\n      <filter>image/x-panasonic-raw</filter>\n      <filter>image/x-fuji-raf</filter>\n      <filter>image/x-sigma-x3f</filter>\n      <filter>image/x-pentax-pef</filter>\n      <filter>image/x-kodak-dcr</filter>\n      <filter>image/x-kodak-kdc</filter>\n      <filter>image/x-sony-sr2</filter>\n      <filter>image/x-sony-arw</filter>\n      <filter>image/x-sony-srf</filter>\n      <filter>image/x-minolta-mrw</filter>\n      <filter>image/x-olympus-orf</filter>\n      <filter>image/x-raw-epson</filter>\n      <filter>image/x-portable-pixmap</filter>\n      <filter>image/x-dpx</filter>\n\n      <filter>image/raw</filter>\n      <filter>image/x-raw</filter>\n\n      <filter>image/svg.*</filter>\n\n      <filter>application/photoshop</filter>\n      <filter>application/illustrator</filter>\n      <filter>application/postscript</filter>\n    </plugin>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/filemanager-plugins-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.api.thumbnail.ThumbnailService--thumbnailFactory",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.service.thumbnailfactory/Contributions/org.nuxeo.ecm.platform.picture.service.thumbnailfactory--thumbnailFactory",
              "id": "org.nuxeo.ecm.platform.picture.service.thumbnailfactory--thumbnailFactory",
              "registrationOrder": 1,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.api.thumbnail.ThumbnailService",
                "name": "org.nuxeo.ecm.core.api.thumbnail.ThumbnailService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"thumbnailFactory\" target=\"org.nuxeo.ecm.core.api.thumbnail.ThumbnailService\">\n    <thumbnailFactory facet=\"Picture\" factoryClass=\"org.nuxeo.ecm.platform.picture.thumbnail.ThumbnailPictureFactory\" name=\"thumbnailPictureFactory\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.service.thumbnailfactory",
          "name": "org.nuxeo.ecm.platform.picture.service.thumbnailfactory",
          "requirements": [],
          "resolutionOrder": 333,
          "services": [],
          "startOrder": 325,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.service.thumbnailfactory\">\n\n  <extension target=\"org.nuxeo.ecm.core.api.thumbnail.ThumbnailService\"\n    point=\"thumbnailFactory\">\n    <thumbnailFactory name=\"thumbnailPictureFactory\"\n      facet=\"Picture\"\n      factoryClass=\"org.nuxeo.ecm.platform.picture.thumbnail.ThumbnailPictureFactory\" />\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/picture-thumbnailfactory-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.work.service--queues",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.workmanager/Contributions/org.nuxeo.ecm.platform.picture.workmanager--queues",
              "id": "org.nuxeo.ecm.platform.picture.workmanager--queues",
              "registrationOrder": 9,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.work.service",
                "name": "org.nuxeo.ecm.core.work.service",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"queues\" target=\"org.nuxeo.ecm.core.work.service\">\n    <queue id=\"pictureViewsGeneration\">\n      <maxThreads>2</maxThreads>\n      <category>pictureViewsGeneration</category>\n      <category>pictureViewsGenerationListener</category>\n    </queue>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.workmanager",
          "name": "org.nuxeo.ecm.platform.picture.workmanager",
          "requirements": [],
          "resolutionOrder": 334,
          "services": [],
          "startOrder": 328,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.workmanager\" version=\"1.0\">\n\n  <extension target=\"org.nuxeo.ecm.core.work.service\" point=\"queues\">\n    <queue id=\"pictureViewsGeneration\">\n      <maxThreads>2</maxThreads>\n      <category>pictureViewsGeneration</category>\n      <category>pictureViewsGenerationListener</category>\n    </queue>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/picture-workmanager-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentation": "\n    Define the default operations for the imaging library\n  \n",
          "documentationHtml": "<p>\nDefine the default operations for the imaging library\n</p><p></p>",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.operation.OperationServiceComponent--operations",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.operation/Contributions/org.nuxeo.ecm.platform.picture.operation--operations",
              "id": "org.nuxeo.ecm.platform.picture.operation--operations",
              "registrationOrder": 14,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "name": "org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"operations\" target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\">\n\n    <operation class=\"org.nuxeo.ecm.platform.picture.operation.PictureResize\"/>\n\n    <operation class=\"org.nuxeo.ecm.platform.picture.operation.CreatePicture\"/>\n\n    <operation class=\"org.nuxeo.ecm.platform.picture.operation.GetPictureView\"/>\n\n    <operation class=\"org.nuxeo.ecm.platform.picture.operation.RecomputePictureViews\"/>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.automation.server.AutomationServer--bindings",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.operation/Contributions/org.nuxeo.ecm.platform.picture.operation--bindings",
              "id": "org.nuxeo.ecm.platform.picture.operation--bindings",
              "registrationOrder": 3,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.automation.server.AutomationServer",
                "name": "org.nuxeo.ecm.automation.server.AutomationServer",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"bindings\" target=\"org.nuxeo.ecm.automation.server.AutomationServer\">\n\n    <binding name=\"Picture.RecomputeViews\">\n      <administrator>true</administrator>\n    </binding>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.operation.OperationServiceComponent--chains",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.operation/Contributions/org.nuxeo.ecm.platform.picture.operation--chains",
              "id": "org.nuxeo.ecm.platform.picture.operation--chains",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "name": "org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"chains\" target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\">\n\n    <chain id=\"Image.Blob.Resize\">\n      <operation id=\"Blob.RunConverter\">\n        <param name=\"converter\" type=\"string\">pictureResize</param>\n      </operation>\n    </chain>\n\n    <chain id=\"Image.Blob.ConvertToPDF\">\n      <operation id=\"Context.PopBlob\"/>\n      <operation id=\"Blob.RunConverter\">\n        <param name=\"converter\" type=\"string\">pictureConvertToPDF</param>\n      </operation>\n    </chain>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.operation",
          "name": "org.nuxeo.ecm.platform.picture.operation",
          "requirements": [],
          "resolutionOrder": 335,
          "services": [],
          "startOrder": 322,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.operation\">\n  <documentation>\n    Define the default operations for the imaging library\n  </documentation>\n\n  <extension target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\" point=\"operations\">\n\n    <operation class=\"org.nuxeo.ecm.platform.picture.operation.PictureResize\" />\n\n    <operation class=\"org.nuxeo.ecm.platform.picture.operation.CreatePicture\" />\n\n    <operation class=\"org.nuxeo.ecm.platform.picture.operation.GetPictureView\" />\n\n    <operation class=\"org.nuxeo.ecm.platform.picture.operation.RecomputePictureViews\" />\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.automation.server.AutomationServer\" point=\"bindings\">\n\n    <binding name=\"Picture.RecomputeViews\">\n      <administrator>true</administrator>\n    </binding>\n\n  </extension>\n\n  <extension point=\"chains\" target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\">\n\n    <chain id=\"Image.Blob.Resize\">\n      <operation id=\"Blob.RunConverter\">\n        <param name=\"converter\" type=\"string\">pictureResize</param>\n      </operation>\n    </chain>\n\n    <chain id=\"Image.Blob.ConvertToPDF\">\n      <operation id=\"Context.PopBlob\" />\n      <operation id=\"Blob.RunConverter\">\n        <param name=\"converter\" type=\"string\">pictureConvertToPDF</param>\n      </operation>\n    </chain>\n\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/operations-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentation": "\n      Properties controlling if the picture migration script must be run at startup\n    \n",
              "documentationHtml": "<p>\nProperties controlling if the picture migration script must be run at startup\n</p><p></p>",
              "extensionPoint": "org.nuxeo.runtime.ConfigurationService--configuration",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.imaging.base.properties/Contributions/org.nuxeo.ecm.platform.imaging.base.properties--configuration",
              "id": "org.nuxeo.ecm.platform.imaging.base.properties--configuration",
              "registrationOrder": 31,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.ConfigurationService",
                "name": "org.nuxeo.runtime.ConfigurationService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.runtime.ConfigurationService\">\n    <documentation>\n      Properties controlling if the picture migration script must be run at startup\n    </documentation>\n    <property name=\"nuxeo.picture.migration.enabled\">true</property>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.imaging.base.properties",
          "name": "org.nuxeo.ecm.platform.imaging.base.properties",
          "requirements": [],
          "resolutionOrder": 336,
          "services": [],
          "startOrder": 278,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n\n<component name=\"org.nuxeo.ecm.platform.imaging.base.properties\">\n\n  <extension target=\"org.nuxeo.runtime.ConfigurationService\"\n    point=\"configuration\">\n    <documentation>\n      Properties controlling if the picture migration script must be run at startup\n    </documentation>\n    <property name=\"nuxeo.picture.migration.enabled\">true</property>\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/imaging-base-properties.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentation": "\n    Adapters contribution for Picture documents.\n  \n",
          "documentationHtml": "<p>\nAdapters contribution for Picture documents.\n</p><p></p>",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.api.DocumentAdapterService--adapters",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.MultiviewPicture/Contributions/org.nuxeo.ecm.platform.picture.MultiviewPicture--adapters",
              "id": "org.nuxeo.ecm.platform.picture.MultiviewPicture--adapters",
              "registrationOrder": 11,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.api.DocumentAdapterService",
                "name": "org.nuxeo.ecm.core.api.DocumentAdapterService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"adapters\" target=\"org.nuxeo.ecm.core.api.DocumentAdapterService\">\n    <adapter class=\"org.nuxeo.ecm.platform.picture.api.adapters.MultiviewPicture\" factory=\"org.nuxeo.ecm.platform.picture.api.adapters.MultiviewPictureAdapterFactory\"/>\n\n    <adapter class=\"org.nuxeo.ecm.platform.picture.api.adapters.PictureResourceAdapter\" factory=\"org.nuxeo.ecm.platform.picture.api.adapters.PictureResourceAdapterFactory\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.MultiviewPicture",
          "name": "org.nuxeo.ecm.platform.picture.MultiviewPicture",
          "requirements": [],
          "resolutionOrder": 337,
          "services": [],
          "startOrder": 313,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n\n<component name=\"org.nuxeo.ecm.platform.picture.MultiviewPicture\">\n  <documentation>\n    Adapters contribution for Picture documents.\n  </documentation>\n\n  <extension target=\"org.nuxeo.ecm.core.api.DocumentAdapterService\" point=\"adapters\">\n    <adapter class=\"org.nuxeo.ecm.platform.picture.api.adapters.MultiviewPicture\"\n      factory=\"org.nuxeo.ecm.platform.picture.api.adapters.MultiviewPictureAdapterFactory\" />\n\n    <adapter class=\"org.nuxeo.ecm.platform.picture.api.adapters.PictureResourceAdapter\"\n      factory=\"org.nuxeo.ecm.platform.picture.api.adapters.PictureResourceAdapterFactory\" />\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/picture-adapter-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.api.blobholder.BlobHolderAdapterComponent--BlobHolderFactory",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.blobholder/Contributions/org.nuxeo.ecm.platform.picture.blobholder--BlobHolderFactory",
              "id": "org.nuxeo.ecm.platform.picture.blobholder--BlobHolderFactory",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.api.blobholder.BlobHolderAdapterComponent",
                "name": "org.nuxeo.ecm.core.api.blobholder.BlobHolderAdapterComponent",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"BlobHolderFactory\" target=\"org.nuxeo.ecm.core.api.blobholder.BlobHolderAdapterComponent\">\n    <blobHolderFactory class=\"org.nuxeo.ecm.platform.picture.api.adapters.PictureBlobHolderFactory\" facet=\"Picture\" name=\"picture\"/>\n    <blobHolderFactory class=\"org.nuxeo.ecm.platform.picture.api.adapters.PictureBlobHolderFactory\" docType=\"PictureBook\" name=\"pictureBook\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.blobholder",
          "name": "org.nuxeo.ecm.platform.picture.blobholder",
          "requirements": [],
          "resolutionOrder": 338,
          "services": [],
          "startOrder": 315,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.blobholder\">\n\n  <extension\n    target=\"org.nuxeo.ecm.core.api.blobholder.BlobHolderAdapterComponent\"\n    point=\"BlobHolderFactory\">\n    <blobHolderFactory name=\"picture\" facet=\"Picture\"\n                       class=\"org.nuxeo.ecm.platform.picture.api.adapters.PictureBlobHolderFactory\" />\n    <blobHolderFactory name=\"pictureBook\" docType=\"PictureBook\"\n                       class=\"org.nuxeo.ecm.platform.picture.api.adapters.PictureBlobHolderFactory\" />\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/picture-blobholder-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.binary.metadata--metadataMappings",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.binary.metadata.contrib/Contributions/org.nuxeo.ecm.platform.picture.binary.metadata.contrib--metadataMappings",
              "id": "org.nuxeo.ecm.platform.picture.binary.metadata.contrib--metadataMappings",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.binary.metadata",
                "name": "org.nuxeo.binary.metadata",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"metadataMappings\" target=\"org.nuxeo.binary.metadata\">\n    <metadataMapping blobXPath=\"file:content\" id=\"EXIF\" ignorePrefix=\"false\" processor=\"exifTool\">\n      <metadata name=\"EXIF:ImageDescription\" xpath=\"imd:image_description\"/>\n      <metadata name=\"EXIF:UserComment\" xpath=\"imd:user_comment\"/>\n      <metadata name=\"EXIF:Equipment\" xpath=\"imd:equipment\"/>\n      <metadata name=\"EXIF:DateTimeOriginal\" xpath=\"imd:date_time_original\"/>\n      <metadata name=\"EXIF:XResolution\" xpath=\"imd:xresolution\"/>\n      <metadata name=\"EXIF:YResolution\" xpath=\"imd:yresolution\"/>\n      <metadata name=\"EXIF:PixelXDimension\" xpath=\"imd:pixel_xdimension\"/>\n      <metadata name=\"EXIF:PixelYDimension\" xpath=\"imd:pixel_ydimension\"/>\n      <metadata name=\"EXIF:Copyright\" xpath=\"imd:copyright\"/>\n      <metadata name=\"EXIF:ExposureTime\" xpath=\"imd:exposure_time\"/>\n      <metadata name=\"EXIF:ISO\" xpath=\"imd:iso_speed_ratings\"/>\n      <metadata name=\"EXIF:FocalLength\" xpath=\"imd:focalLength\"/>\n      <metadata name=\"EXIF:ColorSpace\" xpath=\"imd:color_space\"/>\n      <metadata name=\"EXIF:WhiteBalance\" xpath=\"imd:white_balance\"/>\n      <metadata name=\"EXIF:IccProfile\" xpath=\"imd:icc_profile\"/>\n      <metadata name=\"EXIF:Orientation\" xpath=\"imd:orientation\"/>\n      <metadata name=\"EXIF:FNumber\" xpath=\"imd:fnumber\"/>\n    </metadataMapping>\n    <metadataMapping blobXPath=\"file:content\" id=\"IPTC\" ignorePrefix=\"false\" processor=\"exifTool\">\n      <metadata name=\"IPTC:Source\" xpath=\"dc:source\"/>\n      <metadata name=\"IPTC:CopyrightNotice\" xpath=\"dc:rights\"/>\n      <metadata name=\"IPTC:Caption-Abstract\" xpath=\"dc:description\"/>\n    </metadataMapping>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.binary.metadata--metadataRules",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.binary.metadata.contrib/Contributions/org.nuxeo.ecm.platform.picture.binary.metadata.contrib--metadataRules",
              "id": "org.nuxeo.ecm.platform.picture.binary.metadata.contrib--metadataRules",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.binary.metadata",
                "name": "org.nuxeo.binary.metadata",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"metadataRules\" target=\"org.nuxeo.binary.metadata\">\n    <rule async=\"false\" enabled=\"true\" id=\"iptc\" order=\"0\">\n      <metadataMappings>\n        <metadataMapping-id>EXIF</metadataMapping-id>\n        <metadataMapping-id>IPTC</metadataMapping-id>\n      </metadataMappings>\n      <filters>\n        <filter-id>hasPictureType</filter-id>\n      </filters>\n    </rule>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.actions.ActionService--filters",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.binary.metadata.contrib/Contributions/org.nuxeo.ecm.platform.picture.binary.metadata.contrib--filters",
              "id": "org.nuxeo.ecm.platform.picture.binary.metadata.contrib--filters",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.actions.ActionService",
                "name": "org.nuxeo.ecm.platform.actions.ActionService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"filters\" target=\"org.nuxeo.ecm.platform.actions.ActionService\">\n    <filter id=\"hasPictureType\">\n      <rule grant=\"true\">\n        <type>Picture</type>\n      </rule>\n    </filter>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.binary.metadata.contrib",
          "name": "org.nuxeo.ecm.platform.picture.binary.metadata.contrib",
          "requirements": [],
          "resolutionOrder": 339,
          "services": [],
          "startOrder": 314,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.binary.metadata.contrib\">\n\n  <extension target=\"org.nuxeo.binary.metadata\"\n             point=\"metadataMappings\">\n    <metadataMapping id=\"EXIF\" processor=\"exifTool\" blobXPath=\"file:content\" ignorePrefix=\"false\">\n      <metadata name=\"EXIF:ImageDescription\" xpath=\"imd:image_description\"/>\n      <metadata name=\"EXIF:UserComment\" xpath=\"imd:user_comment\"/>\n      <metadata name=\"EXIF:Equipment\" xpath=\"imd:equipment\"/>\n      <metadata name=\"EXIF:DateTimeOriginal\" xpath=\"imd:date_time_original\"/>\n      <metadata name=\"EXIF:XResolution\" xpath=\"imd:xresolution\"/>\n      <metadata name=\"EXIF:YResolution\" xpath=\"imd:yresolution\"/>\n      <metadata name=\"EXIF:PixelXDimension\" xpath=\"imd:pixel_xdimension\"/>\n      <metadata name=\"EXIF:PixelYDimension\" xpath=\"imd:pixel_ydimension\"/>\n      <metadata name=\"EXIF:Copyright\" xpath=\"imd:copyright\"/>\n      <metadata name=\"EXIF:ExposureTime\" xpath=\"imd:exposure_time\"/>\n      <metadata name=\"EXIF:ISO\" xpath=\"imd:iso_speed_ratings\"/>\n      <metadata name=\"EXIF:FocalLength\" xpath=\"imd:focalLength\"/>\n      <metadata name=\"EXIF:ColorSpace\" xpath=\"imd:color_space\"/>\n      <metadata name=\"EXIF:WhiteBalance\" xpath=\"imd:white_balance\"/>\n      <metadata name=\"EXIF:IccProfile\" xpath=\"imd:icc_profile\"/>\n      <metadata name=\"EXIF:Orientation\" xpath=\"imd:orientation\"/>\n      <metadata name=\"EXIF:FNumber\" xpath=\"imd:fnumber\"/>\n    </metadataMapping>\n    <metadataMapping id=\"IPTC\" processor=\"exifTool\" blobXPath=\"file:content\" ignorePrefix=\"false\">\n      <metadata name=\"IPTC:Source\" xpath=\"dc:source\"/>\n      <metadata name=\"IPTC:CopyrightNotice\" xpath=\"dc:rights\"/>\n      <metadata name=\"IPTC:Caption-Abstract\" xpath=\"dc:description\"/>\n    </metadataMapping>\n  </extension>\n\n  <extension target=\"org.nuxeo.binary.metadata\"\n             point=\"metadataRules\">\n    <rule id=\"iptc\" order=\"0\" enabled=\"true\" async=\"false\">\n      <metadataMappings>\n        <metadataMapping-id>EXIF</metadataMapping-id>\n        <metadataMapping-id>IPTC</metadataMapping-id>\n      </metadataMappings>\n      <filters>\n        <filter-id>hasPictureType</filter-id>\n      </filters>\n    </rule>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.actions.ActionService\"\n             point=\"filters\">\n    <filter id=\"hasPictureType\">\n      <rule grant=\"true\">\n        <type>Picture</type>\n      </rule>\n    </filter>\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/picture-metadata-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.convert.service.ConversionServiceImpl--converter",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.convert/Contributions/org.nuxeo.ecm.platform.picture.convert--converter",
              "id": "org.nuxeo.ecm.platform.picture.convert--converter",
              "registrationOrder": 4,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.convert.service.ConversionServiceImpl",
                "name": "org.nuxeo.ecm.core.convert.service.ConversionServiceImpl",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"converter\" target=\"org.nuxeo.ecm.core.convert.service.ConversionServiceImpl\">\n\n    <converter class=\"org.nuxeo.ecm.platform.picture.convert.RotationPictureConverter\" name=\"pictureRotation\">\n      <sourceMimeType>image/*</sourceMimeType>\n      <sourceMimeType>application/photoshop</sourceMimeType>\n      <sourceMimeType>application/illustrator</sourceMimeType>\n      <sourceMimeType>application/postscript</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n      <destinationMimeType>image/png</destinationMimeType>\n      <destinationMimeType>image/gif</destinationMimeType>\n    </converter>\n\n    <converter class=\"org.nuxeo.ecm.platform.picture.convert.ResizePictureConverter\" name=\"pictureResize\">\n      <sourceMimeType>image/*</sourceMimeType>\n      <sourceMimeType>application/photoshop</sourceMimeType>\n      <sourceMimeType>application/illustrator</sourceMimeType>\n      <sourceMimeType>application/postscript</sourceMimeType>\n      <sourceMimeType>application/pdf</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n      <destinationMimeType>image/png</destinationMimeType>\n      <destinationMimeType>image/gif</destinationMimeType>\n    </converter>\n\n    <converter class=\"org.nuxeo.ecm.platform.picture.convert.CropPictureConverter\" name=\"pictureCrop\">\n      <sourceMimeType>image/*</sourceMimeType>\n      <sourceMimeType>application/photoshop</sourceMimeType>\n      <sourceMimeType>application/illustrator</sourceMimeType>\n      <sourceMimeType>application/postscript</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n      <destinationMimeType>image/png</destinationMimeType>\n      <destinationMimeType>image/gif</destinationMimeType>\n    </converter>\n\n    <converter class=\"org.nuxeo.ecm.platform.picture.convert.ConvertToPDFPictureConverter\" name=\"pictureConvertToPDF\">\n      <sourceMimeType>image/*</sourceMimeType>\n      <sourceMimeType>application/photoshop</sourceMimeType>\n      <sourceMimeType>application/illustrator</sourceMimeType>\n      <sourceMimeType>application/postscript</sourceMimeType>\n      <destinationMimeType>application/pdf</destinationMimeType>\n    </converter>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.convert",
          "name": "org.nuxeo.ecm.platform.picture.convert",
          "requirements": [],
          "resolutionOrder": 340,
          "services": [],
          "startOrder": 317,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.convert\">\n\n  <extension target=\"org.nuxeo.ecm.core.convert.service.ConversionServiceImpl\"\n    point=\"converter\">\n\n    <converter name=\"pictureRotation\" class=\"org.nuxeo.ecm.platform.picture.convert.RotationPictureConverter\">\n      <sourceMimeType>image/*</sourceMimeType>\n      <sourceMimeType>application/photoshop</sourceMimeType>\n      <sourceMimeType>application/illustrator</sourceMimeType>\n      <sourceMimeType>application/postscript</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n      <destinationMimeType>image/png</destinationMimeType>\n      <destinationMimeType>image/gif</destinationMimeType>\n    </converter>\n\n    <converter name=\"pictureResize\" class=\"org.nuxeo.ecm.platform.picture.convert.ResizePictureConverter\">\n      <sourceMimeType>image/*</sourceMimeType>\n      <sourceMimeType>application/photoshop</sourceMimeType>\n      <sourceMimeType>application/illustrator</sourceMimeType>\n      <sourceMimeType>application/postscript</sourceMimeType>\n      <sourceMimeType>application/pdf</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n      <destinationMimeType>image/png</destinationMimeType>\n      <destinationMimeType>image/gif</destinationMimeType>\n    </converter>\n\n    <converter name=\"pictureCrop\" class=\"org.nuxeo.ecm.platform.picture.convert.CropPictureConverter\">\n      <sourceMimeType>image/*</sourceMimeType>\n      <sourceMimeType>application/photoshop</sourceMimeType>\n      <sourceMimeType>application/illustrator</sourceMimeType>\n      <sourceMimeType>application/postscript</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n      <destinationMimeType>image/png</destinationMimeType>\n      <destinationMimeType>image/gif</destinationMimeType>\n    </converter>\n\n    <converter name=\"pictureConvertToPDF\" class=\"org.nuxeo.ecm.platform.picture.convert.ConvertToPDFPictureConverter\">\n      <sourceMimeType>image/*</sourceMimeType>\n      <sourceMimeType>application/photoshop</sourceMimeType>\n      <sourceMimeType>application/illustrator</sourceMimeType>\n      <sourceMimeType>application/postscript</sourceMimeType>\n      <destinationMimeType>application/pdf</destinationMimeType>\n    </converter>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/convert-service-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.rendition.service.RenditionService--renditionDefinitionProviders",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.renditions/Contributions/org.nuxeo.ecm.platform.picture.renditions--renditionDefinitionProviders",
              "id": "org.nuxeo.ecm.platform.picture.renditions--renditionDefinitionProviders",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.rendition.service.RenditionService",
                "name": "org.nuxeo.ecm.platform.rendition.service.RenditionService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"renditionDefinitionProviders\" target=\"org.nuxeo.ecm.platform.rendition.service.RenditionService\">\n\n    <renditionDefinitionProvider class=\"org.nuxeo.ecm.platform.picture.rendition.PictureRenditionDefinitionProvider\" name=\"pictureRenditionDefinitionProvider\">\n      <filters>\n        <filter-id>hasPictureFacet</filter-id>\n      </filters>\n    </renditionDefinitionProvider>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.rendition.service.RenditionService--renditionDefinitions",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.renditions/Contributions/org.nuxeo.ecm.platform.picture.renditions--renditionDefinitions",
              "id": "org.nuxeo.ecm.platform.picture.renditions--renditionDefinitions",
              "registrationOrder": 1,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.rendition.service.RenditionService",
                "name": "org.nuxeo.ecm.platform.rendition.service.RenditionService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"renditionDefinitions\" target=\"org.nuxeo.ecm.platform.rendition.service.RenditionService\">\n\n    <renditionDefinition name=\"imageToPDF\">\n      <label>label.rendition.pdf</label>\n      <icon>/icons/pdf.png</icon>\n      <contentType>application/pdf</contentType>\n      <operationChain>Image.Blob.ConvertToPDF</operationChain>\n      <filters>\n        <filter-id>hasPictureFacet</filter-id>\n      </filters>\n    </renditionDefinition>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.actions.ActionService--filters",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.renditions/Contributions/org.nuxeo.ecm.platform.picture.renditions--filters",
              "id": "org.nuxeo.ecm.platform.picture.renditions--filters",
              "registrationOrder": 5,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.actions.ActionService",
                "name": "org.nuxeo.ecm.platform.actions.ActionService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"filters\" target=\"org.nuxeo.ecm.platform.actions.ActionService\">\n\n    <filter id=\"hasPictureFacet\">\n      <rule grant=\"true\">\n        <facet>Picture</facet>\n      </rule>\n    </filter>\n\n    <filter append=\"true\" id=\"allowPDFRendition\">\n      <rule grant=\"false\">\n        <facet>Picture</facet>\n      </rule>\n    </filter>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.renditions",
          "name": "org.nuxeo.ecm.platform.picture.renditions",
          "requirements": [
            "org.nuxeo.ecm.platform.rendition.contrib"
          ],
          "resolutionOrder": 419,
          "services": [],
          "startOrder": 324,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.renditions\">\n\n  <require>org.nuxeo.ecm.platform.rendition.contrib</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.rendition.service.RenditionService\"\n    point=\"renditionDefinitionProviders\">\n\n    <renditionDefinitionProvider name=\"pictureRenditionDefinitionProvider\"\n      class=\"org.nuxeo.ecm.platform.picture.rendition.PictureRenditionDefinitionProvider\">\n      <filters>\n        <filter-id>hasPictureFacet</filter-id>\n      </filters>\n    </renditionDefinitionProvider>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.rendition.service.RenditionService\"\n    point=\"renditionDefinitions\">\n\n    <renditionDefinition name=\"imageToPDF\">\n      <label>label.rendition.pdf</label>\n      <icon>/icons/pdf.png</icon>\n      <contentType>application/pdf</contentType>\n      <operationChain>Image.Blob.ConvertToPDF</operationChain>\n      <filters>\n        <filter-id>hasPictureFacet</filter-id>\n      </filters>\n    </renditionDefinition>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.actions.ActionService\"\n    point=\"filters\">\n\n    <filter id=\"hasPictureFacet\">\n      <rule grant=\"true\">\n        <facet>Picture</facet>\n      </rule>\n    </filter>\n\n    <filter id=\"allowPDFRendition\" append=\"true\">\n      <rule grant=\"false\">\n        <facet>Picture</facet>\n      </rule>\n    </filter>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/picture-renditions-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--schema",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.coreTypes/Contributions/org.nuxeo.ecm.platform.picture.coreTypes--schema",
              "id": "org.nuxeo.ecm.platform.picture.coreTypes--schema",
              "registrationOrder": 33,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"schema\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <schema name=\"picture\" src=\"schema/picture.xsd\"/>\n    <schema name=\"image_metadata\" prefix=\"imd\" src=\"schema/image_metadata.xsd\"/>\n    <schema name=\"iptc\" prefix=\"iptc\" src=\"schema/iptc.xsd\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--doctype",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.coreTypes/Contributions/org.nuxeo.ecm.platform.picture.coreTypes--doctype",
              "id": "org.nuxeo.ecm.platform.picture.coreTypes--doctype",
              "registrationOrder": 26,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"doctype\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n\n    <facet name=\"Picture\" perDocumentQuery=\"false\">\n      <schema name=\"file\"/>\n      <schema name=\"picture\"/>\n      <schema name=\"image_metadata\"/>\n    </facet>\n\n    <doctype extends=\"Document\" name=\"Picture\">\n      <schema name=\"common\"/>\n      <schema name=\"uid\"/>\n      <schema name=\"dublincore\"/>\n      <facet name=\"Picture\"/>\n      <facet name=\"Versionable\"/>\n      <facet name=\"Publishable\"/>\n      <facet name=\"Commentable\"/>\n      <facet name=\"HasRelatedText\"/>\n      <facet name=\"NXTag\"/>\n    </doctype>\n\n    <doctype append=\"true\" name=\"Folder\">\n      <subtypes>\n        <type>Picture</type>\n      </subtypes>\n    </doctype>\n    <doctype append=\"true\" name=\"OrderedFolder\">\n      <subtypes>\n        <type>Picture</type>\n      </subtypes>\n    </doctype>\n    <doctype append=\"true\" name=\"Workspace\">\n      <subtypes>\n        <type>Picture</type>\n      </subtypes>\n    </doctype>\n    <doctype append=\"true\" name=\"PictureBook\">\n      <subtypes>\n        <type>Picture</type>\n      </subtypes>\n    </doctype>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.coreTypes",
          "name": "org.nuxeo.ecm.platform.picture.coreTypes",
          "requirements": [
            "org.nuxeo.ecm.core.schema.TypeService",
            "org.nuxeo.ecm.core.CoreExtensions",
            "org.nuxeo.ecm.tags.schemas"
          ],
          "resolutionOrder": 447,
          "services": [],
          "startOrder": 318,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.coreTypes\">\n\n  <require>org.nuxeo.ecm.core.schema.TypeService</require>\n  <require>org.nuxeo.ecm.core.CoreExtensions</require>\n  <require>org.nuxeo.ecm.tags.schemas</require>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\"\n             point=\"schema\">\n    <schema name=\"picture\" src=\"schema/picture.xsd\"/>\n    <schema name=\"image_metadata\" src=\"schema/image_metadata.xsd\" prefix=\"imd\"/>\n    <schema name=\"iptc\" src=\"schema/iptc.xsd\" prefix=\"iptc\"/>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\"\n             point=\"doctype\">\n\n    <facet name=\"Picture\" perDocumentQuery=\"false\">\n      <schema name=\"file\"/>\n      <schema name=\"picture\"/>\n      <schema name=\"image_metadata\"/>\n    </facet>\n\n    <doctype name=\"Picture\" extends=\"Document\">\n      <schema name=\"common\"/>\n      <schema name=\"uid\"/>\n      <schema name=\"dublincore\"/>\n      <facet name=\"Picture\"/>\n      <facet name=\"Versionable\"/>\n      <facet name=\"Publishable\"/>\n      <facet name=\"Commentable\"/>\n      <facet name=\"HasRelatedText\"/>\n      <facet name=\"NXTag\" />\n    </doctype>\n\n    <doctype name=\"Folder\" append=\"true\">\n      <subtypes>\n        <type>Picture</type>\n      </subtypes>\n    </doctype>\n    <doctype name=\"OrderedFolder\" append=\"true\">\n      <subtypes>\n        <type>Picture</type>\n      </subtypes>\n    </doctype>\n    <doctype name=\"Workspace\" append=\"true\">\n      <subtypes>\n        <type>Picture</type>\n      </subtypes>\n    </doctype>\n    <doctype name=\"PictureBook\" append=\"true\">\n      <subtypes>\n        <type>Picture</type>\n      </subtypes>\n    </doctype>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/picture-schemas-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.preview.adapter.PreviewAdapterManagerComponent--AdapterFactory",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.web.preview.adapter.contrib/Contributions/org.nuxeo.ecm.platform.picture.web.preview.adapter.contrib--AdapterFactory",
              "id": "org.nuxeo.ecm.platform.picture.web.preview.adapter.contrib--AdapterFactory",
              "registrationOrder": 1,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.preview.adapter.PreviewAdapterManagerComponent",
                "name": "org.nuxeo.ecm.platform.preview.adapter.PreviewAdapterManagerComponent",
                "type": "service"
              },
              "version": "2025.27.34",
              "xml": "<extension point=\"AdapterFactory\" target=\"org.nuxeo.ecm.platform.preview.adapter.PreviewAdapterManagerComponent\">\n\n    <previewAdapter enabled=\"true\" name=\"picturePreviewAdapter\">\n      <typeName>Picture</typeName>\n      <class>org.nuxeo.ecm.platform.picture.preview.adapter.factories.PicturePreviewAdapterFactory</class>\n    </previewAdapter>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.web.preview.adapter.contrib",
          "name": "org.nuxeo.ecm.platform.picture.web.preview.adapter.contrib",
          "requirements": [
            "org.nuxeo.ecm.platform.preview.adapter.contrib"
          ],
          "resolutionOrder": 529,
          "services": [],
          "startOrder": 327,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.web.preview.adapter.contrib\">\n\n  <require>org.nuxeo.ecm.platform.preview.adapter.contrib</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.preview.adapter.PreviewAdapterManagerComponent\"\n    point=\"AdapterFactory\">\n\n    <previewAdapter name=\"picturePreviewAdapter\" enabled=\"true\">\n      <typeName>Picture</typeName>\n      <class>org.nuxeo.ecm.platform.picture.preview.adapter.factories.PicturePreviewAdapterFactory</class>\n    </previewAdapter>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/preview-adapter-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.picture.ImagingComponent",
          "documentation": "\n    The imaging component is providing API for image manipulations\n    @author Max Stepanov\n  \n",
          "documentationHtml": "<p>\nThe imaging component is providing API for image manipulations\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.picture.ImagingComponent",
              "descriptors": [
                "org.nuxeo.ecm.platform.picture.api.ImagingConfigurationDescriptor"
              ],
              "documentation": "\n      Extension point to contribute configuration information that will be used by the\n      ImagingService\n    \n",
              "documentationHtml": "<p>\nExtension point to contribute configuration information that will be used by the\nImagingService\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.ImagingComponent/ExtensionPoints/org.nuxeo.ecm.platform.picture.ImagingComponent--configuration",
              "id": "org.nuxeo.ecm.platform.picture.ImagingComponent--configuration",
              "label": "configuration (org.nuxeo.ecm.platform.picture.ImagingComponent)",
              "name": "configuration",
              "version": "2025.27.34"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.picture.ImagingComponent",
              "descriptors": [
                "org.nuxeo.ecm.platform.picture.api.PictureConversion"
              ],
              "documentationHtml": "",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.ImagingComponent/ExtensionPoints/org.nuxeo.ecm.platform.picture.ImagingComponent--pictureConversions",
              "id": "org.nuxeo.ecm.platform.picture.ImagingComponent--pictureConversions",
              "label": "pictureConversions (org.nuxeo.ecm.platform.picture.ImagingComponent)",
              "name": "pictureConversions",
              "version": "2025.27.34"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.ImagingComponent",
          "name": "org.nuxeo.ecm.platform.picture.ImagingComponent",
          "requirements": [
            "org.nuxeo.ecm.core.operation.OperationServiceComponent"
          ],
          "resolutionOrder": 609,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.picture.ImagingComponent",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core/org.nuxeo.ecm.platform.picture.ImagingComponent/Services/org.nuxeo.ecm.platform.picture.api.ImagingService",
              "id": "org.nuxeo.ecm.platform.picture.api.ImagingService",
              "overriden": false,
              "version": "2025.27.34"
            }
          ],
          "startOrder": 646,
          "version": "2025.27.34",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.picture.ImagingComponent\"\n  version=\"1.0\">\n  <documentation>\n    The imaging component is providing API for image manipulations\n    @author Max Stepanov\n  </documentation>\n\n  <require>org.nuxeo.ecm.core.operation.OperationServiceComponent</require>\n  <implementation class=\"org.nuxeo.ecm.platform.picture.ImagingComponent\" />\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.platform.picture.api.ImagingService\" />\n  </service>\n\n  <extension-point name=\"configuration\">\n    <documentation>\n      Extension point to contribute configuration information that will be used by the\n      ImagingService\n    </documentation>\n    <object class=\"org.nuxeo.ecm.platform.picture.api.ImagingConfigurationDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"pictureConversions\">\n    <object class=\"org.nuxeo.ecm.platform.picture.api.PictureConversion\" />\n  </extension-point>\n</component>\n",
          "xmlFileName": "/OSGI-INF/imaging-service-framework.xml",
          "xmlPureComponent": false
        }
      ],
      "fileName": "nuxeo-platform-imaging-core-2025.27.34.jar",
      "groupId": "org.nuxeo.ecm.platform",
      "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.picture/org.nuxeo.ecm.platform.picture.core",
      "id": "org.nuxeo.ecm.platform.picture.core",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nCreated-By: 1.6.0_20 (Sun Microsystems Inc.)\r\nJava-Version: 21\r\nBuild-Jdk-Spec: 21\r\nBundle-ManifestVersion: 2\r\nExport-Package: org.nuxeo.ecm.platform.picture.core\r\nPrivate-Package: schema,org.nuxeo.ecm.platform.picture,lib,org.nuxeo.ecm\r\n .platform.picture.magick,org.nuxeo.ecm.platform.picture.core.imagej,org\r\n .nuxeo.ecm.platform.picture.extension,os.win32.x86,org.nuxeo.ecm.platfo\r\n rm.picture.magick.utils,org.nuxeo.ecm.platform.picture.core.librarysele\r\n ctor,org.nuxeo.ecm.platform.picture.core.im\r\nBundle-ActivationPolicy: lazy\r\nBundle-ClassPath: .\r\nBundle-Category: core,stateful\r\nBundle-Name: Nuxeo Picture Imaging Core\r\nBundle-RequiredExecutionEnvironment: JavaSE-1.6\r\nBundle-Vendor: Nuxeo\r\nEclipse-LazyStart: true\r\nBundle-Version: 0.0.0.SNAPSHOT\r\nNuxeo-Component: OSGI-INF/imaging-service-framework.xml,OSGI-INF/imaging\r\n -service-contrib.xml,OSGI-INF/imaging-bulk-contrib.xml,OSGI-INF/imaging\r\n -pageprovider-contrib.xml,OSGI-INF/picture-schemas-contrib.xml,OSGI-INF\r\n /imaging-types-contrib.xml,OSGI-INF/picture-life-cycle-contrib.xml,OSGI\r\n -INF/listeners-contrib.xml,OSGI-INF/picturebook-schemas-contrib.xml,OSG\r\n I-INF/picturebook-life-cycle-contrib.xml,OSGI-INF/libraryselector-confi\r\n g-framework.xml,OSGI-INF/commandline-imagemagick-contrib.xml,OSGI-INF/f\r\n ilemanager-plugins-contrib.xml,OSGI-INF/picture-thumbnailfactory-contri\r\n b.xml,OSGI-INF/picture-workmanager-contrib.xml,OSGI-INF/operations-cont\r\n rib.xml,OSGI-INF/picture-renditions-contrib.xml,OSGI-INF/imaging-base-p\r\n roperties.xml,OSGI-INF/preview-adapter-contrib.xml,OSGI-INF/picture-ada\r\n pter-contrib.xml,OSGI-INF/picture-blobholder-contrib.xml,OSGI-INF/pictu\r\n re-metadata-contrib.xml,OSGI-INF/convert-service-contrib.xml\r\nImport-Package: com.drew.imaging.jpeg,com.drew.metadata,com.drew.metadat\r\n a.iptc,ij,ij.io,ij.process,it.tidalwave.image.jai,it.tidalwave.image.ja\r\n va2d;img=split;version=\"0.9.5\",javax.imageio,javax.imageio.metadata,jav\r\n ax.imageio.stream,org.apache.commons.logging,org.nuxeo.common.utils,org\r\n .nuxeo.common.xmap.annotation,org.nuxeo.ecm.core;api=split,org.nuxeo.ec\r\n m.core.api;api=split,org.nuxeo.ecm.core.api.impl,org.nuxeo.ecm.core.api\r\n .impl.blob,org.nuxeo.ecm.directory;api=split,org.nuxeo.ecm.platform.com\r\n mandline.executor.api,org.nuxeo.ecm.platform.filemanager.service.extens\r\n ion,org.nuxeo.ecm.platform.filemanager.utils,org.nuxeo.ecm.platform.pic\r\n ture.api,org.nuxeo.ecm.platform.picture.api.adapters,org.nuxeo.ecm.plat\r\n form.types,org.nuxeo.runtime,org.nuxeo.runtime.api,org.nuxeo.runtime.mo\r\n del,org.nuxeo.runtime.services.streaming,org.nuxeo.ecm.automation,org.n\r\n uxeo.ecm.automation.core,org.nuxeo.ecm.automation.core.annotations\r\nBundle-SymbolicName: org.nuxeo.ecm.platform.picture.core;singleton=true\r\nEclipse-RegisterBuddy: org.nuxeo.ecm.platform.filemanager.core\r\n\r\n",
      "maxResolutionOrder": 609,
      "minResolutionOrder": 322,
      "packages": [],
      "requirements": [],
      "version": "2025.27.34"
    }
  ],
  "creationDate": 1793873591050,
  "key": "Nuxeo Platform-2025.27",
  "name": "Nuxeo Platform",
  "operations": [
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Chain",
      "contributingComponent": "org.nuxeo.ecm.platform.picture.operation",
      "hierarchyPath": "/op:Image.Blob.ConvertToPDF",
      "label": "Image.Blob.ConvertToPDF",
      "name": "Image.Blob.ConvertToPDF",
      "operationClass": "org.nuxeo.ecm.automation.core.impl.OperationChainCompiler.CompiledChainImpl",
      "params": [],
      "signature": [
        "void",
        "blob"
      ],
      "url": "Image.Blob.ConvertToPDF",
      "version": "2025.27.34"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Chain",
      "contributingComponent": "org.nuxeo.ecm.platform.picture.operation",
      "hierarchyPath": "/op:Image.Blob.Resize",
      "label": "Image.Blob.Resize",
      "name": "Image.Blob.Resize",
      "operationClass": "org.nuxeo.ecm.automation.core.impl.OperationChainCompiler.CompiledChainImpl",
      "params": [],
      "signature": [
        "blob",
        "blob"
      ],
      "url": "Image.Blob.Resize",
      "version": "2025.27.34"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Services",
      "contributingComponent": "org.nuxeo.ecm.platform.picture.operation",
      "description": "Create a Picture document in the input folder. You can initialize the document properties using the 'properties' parameter. The properties are specified as <i>key=value</i> pairs separated by a new line. The key <i>originalPicture</i> is used to reference the JSON representation of the Blob for the original picture. The <i>pictureTemplates</i> parameter can be used to define the size of the different views to be generated, each line must be a JSONObject { title=\"title\", description=\"description\", maxsize=maxsize}. Returns the created document.",
      "hierarchyPath": "/op:Picture.Create",
      "label": "Create Picture",
      "name": "Picture.Create",
      "operationClass": "org.nuxeo.ecm.platform.picture.operation.CreatePicture",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "name",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "pictureTemplates",
          "order": 0,
          "type": "properties",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "properties",
          "order": 0,
          "type": "properties",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "document",
        "document",
        "documents",
        "documents"
      ],
      "url": "Picture.Create",
      "version": "2025.27.34"
    },
    {
      "@type": "NXOperation",
      "aliases": [
        "Picture.getView"
      ],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.picture.operation",
      "description": "Get an image from a Picture document.",
      "hierarchyPath": "/op:Picture.GetView",
      "label": "Get image view",
      "name": "Picture.GetView",
      "operationClass": "org.nuxeo.ecm.platform.picture.operation.GetPictureView",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "viewName",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "document",
        "blob"
      ],
      "url": "Picture.GetView",
      "version": "2025.27.34"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Services",
      "contributingComponent": "org.nuxeo.ecm.platform.picture.operation",
      "description": "Recompute the picture views of the documents resulting from the provided NXQL query.",
      "hierarchyPath": "/op:Picture.RecomputeViews",
      "label": "Recompute Picture Views",
      "name": "Picture.RecomputeViews",
      "operationClass": "org.nuxeo.ecm.platform.picture.operation.RecomputePictureViews",
      "params": [
        {
          "description": "NXQL query to collect the documents whose picture views to recompute.",
          "isRequired": true,
          "name": "query",
          "order": 0,
          "type": "string",
          "values": [
            "SELECT * FROM Document WHERE ecm:mixinType = 'Picture' AND picture:views/*/title IS NULL"
          ],
          "widget": null
        }
      ],
      "signature": [
        "void",
        "void"
      ],
      "since": "10.3",
      "url": "Picture.RecomputeViews",
      "version": "2025.27.34"
    },
    {
      "@type": "NXOperation",
      "aliases": [
        "Picture.resize"
      ],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.platform.picture.operation",
      "description": "Use conversion service to resize a picture contained in a Document or a Blob",
      "hierarchyPath": "/op:Picture.Resize",
      "label": "Resize a picture",
      "name": "Picture.Resize",
      "operationClass": "org.nuxeo.ecm.platform.picture.operation.PictureResize",
      "params": [
        {
          "description": null,
          "isRequired": true,
          "name": "maxHeight",
          "order": 0,
          "type": "int",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": true,
          "name": "maxWidth",
          "order": 0,
          "type": "int",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "blob",
        "document",
        "blob"
      ],
      "url": "Picture.Resize",
      "version": "2025.27.34"
    }
  ],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1793873591050,
  "version": "2025.27"
}